home *** CD-ROM | disk | FTP | other *** search
-
- XMODEM File Transfer Protocol
-
- By Larry Jordan
-
- When transferring files between computers using the telephone
- system, there is always the chance that electrical noise will
- result in data transmission errors. To ensure proper transfer of
- files it is necessary to detect data transmission errors and to
- retransmit data that contains errors. Most people think that
- asynchronous parity error detection provides that capability. It
- does not. Parity error detection does tell you when a data
- transfer error has occurred, but it is up to you to retransmit
- the data to correct errors. The problem is that parity error
- detection is not actually performed by most IBM PC communication
- packages. If a package does perform the error detection, it may
- not inform you of errors in such a way that you know to
- immediately retransmit the data. ASCOM, for example, places an
- asterisk in a file where parity errors are detected, but you
- may not realize the errors occurred until long after the file is
- transferred. To ensure "error-free" data transfer you need a
- protocol file transfer technique. Andrew Fluegelman has added
- such a technique to PC-TALK.III called the XMODEM protocol.
-
- A protocol is a set of rules and conventions that apply to a
- specific area of communications that allow participants to
- properly communicate regardless of the hardware brand or software
- package being used. The protocol file transfer is a set of rules
- for transferring files which specifies a set of ASCII handshaking
- characters and the sequence of handshaking required to perform
- certain file transfer functions. Protocol handshaking signals
- allow communication software to transfer text, data and machine
- code files, and to perform sophisticated error-checking. The
- handicap in using protocol file transfer techniques is that the
- computers on both ends of the communications link must be using
- compatible software; there is no standard that controls these
- protocols and almost all communication packages that have a
- protocol file transfer option use a protocol unique to that
- package. This means that a business or group of people must
- standardize its microcomputer communications software to take
- advantage of protocol transfers.
-
- The Ward Christensen XMODEM protocol is one specific file
- transfer protocol that may become a default standard in personal
- communications because of its widespread use on bulletin
- boards and because of its inclusion in low cost personal computer
- communication packages such as PC-TALK. It has not gained
- widespread acceptance in business communication packages partly
- because the protocol is public domain; most business
- communication package designers use unique protocols to force
- businesses to use their software on both ends of communication
- links. By providing you with this insight into protocol transfer
- and explaining in detail the operation of the XMODEM protocol, I
- hope to add momentum to the development of a "standard protocol"
- whether it be the XMODEM model or some other model. Users of
- communication software deserve a standard protocol that will
- allow them to use the technique with any microcomputer regardles
- of the software packages employed.
-
- The XMODEM protocol is illustrated in Figure 1. As you can see
- from that figure, XMODEM does not begin the transfer of data
- until the receiving computer signals the transmitting computer
- that it is ready to receive data. The Negative Acknowledge (NAK)
- character is used for this signal and is sent to the transmitting
- computer every 10 seconds until the file transfer begins. If the
- file transfer does not begin after 9 NAK's are sent, the process
- has to be manually restarted.
-
- After a NAK is received, the transmitting computer uses a Start
- of Header (SOH) character and two block numbers (a true block
- number followed by a 1's complement of the number) to signal the
- start of a 128-byte block of data to be transferred then sends
- the block followed by an error-checking checksum. The checksum
- is calculated by adding the ASCII values of each character in the
- 128 character block; the sum is then divided by 255 and the
- remainder is retained as the checksum. After each block of data
- is transferred, the receiving computer computes its own checksum
- and compares the result to the checksum received from the
- transmitting computer. If the two values are the same, the
- receiving computer sends an Acknowledge (ACK) character to tell
- the receiver to send the next sequential block. If the two
- values are not the same, the receiving computer sends the
- transmitter an NAK to request a retransmission of the last block
- This retransmission process is repeated until the block of data
- is properly received or until 9 attempts have been made to
- transmit the block. If the communications link is noisy,
- resulting in improper block transmission after 9 attempts, the
- file transfer is aborted.
-
- XMODEM uses two block numbers at the start of each block to be
- sure the same block is not transmitted twice because of a
- handshake character loss during the transfer. The receiving
- computer checks the transmitted block to be sure that it is the
- one requested and blocks that are retransmitted by mistake are
- thrown away. When all data has been successfully transmitted, the
- transmitting computer sends the receiver an End of Transmission
- (EOT) character to indicate the end of file.
-
- The XMODEM protocol offers the IBM PC several advantages over other
- protocols and file transfer methods. First, the protocol is in
- the public domain which makes it readily available for software
- designers to incorporate into a communications package. Second,
- the protocol is easy to implement using high level languages such
- as BASIC or Pascal. Third, the protocol only requires a 256-byte
- communication receive buffer which makes it attractive for IBM PC
- owners who only have 64K systems. Forth, the protocol allows a
- user to transfer non-ASCII 8-bit data files (i.e., COM, EXE and
- tokenized BASIC) between microcomputers because it calculates the
- end of a file based on file size and uses handshake signals to
- indicate the end of a file instead relying on an end of file
- marker character (control-Z) to terminate a file transfer.
- Fifth, XMODEM error-checking is superior to normal asynchronous
- parity error checking. The parity method of error-checking is
- 95% effective if the software on the receiving end checks for
- parity errors. XMODEM error-checking is 99.6% effective, and the
- software on the receiving end must check for errors. Parity
- errors detected also do not result in automatic retransmission of
- the bad data; XMODEM detected errors result in data
- retransmission until no errors are detected or until 9
- retransmissions have been attempted. Finally, the protocol is
- used by many CP/M bulletin boards and having the protocol in a
- communications package allows the IBM PC user to receive
- error-checked files from these bulletin boards.
-
- Andrew Fluegelman has given the XMODEM protocol a real boost in
- the IBM PC world by including it in his package. He has also
- added significant power to the package by including the protocol
- Rumor has it that Don Withrow will soon add to the XMODEM
- momentum by adding it to his HOSTCOMM software package. Keep up
- the good work guys -- we will get a standard one way or the
- other!
-
- [This article was derived from material contained in a book
- written by Larry Jordan and Bruce Churchill to be published this
- Summer by The Brady Company. The article will also be in the
- 5th issue of PC World magazine.]
-
-
-
- XMODEM Protocol File Transfer
-
-
- Receiving Transmitting
- Computer Computer
- Ready to Ready to
- Receive Transmit
- | |
- | |
- |---------------------\NAK\--------------------->|
- | |
- |<------/SOH/Blk #1/Blk #1/Good Data/CkSum/------|
- | |
- |---------------------\ACK\--------------------->|
- | |
- |<------/SOH/Blk #2/Blk #2/Good Data/CkSum/------|
- | |
- |---------------------\ACK\--------------------->|
- | |
- |<------/SOH/Blk #3/Blk #3/Garbled Data/CkSum/---|
- | |
- |---------------------\NAK\--------------------->|
- | |
- |<------/SOH/Blk #3/Blk #3/Good Data/CkSum/------|
- | |
- |---------------------\ACK\--------------------->|
- | |
- |<--------------------/EOT/----------------------|
- | |
- |---------------------\ACK\--------------------->|
- | |
- V V
-
- File File
- Receipt Transmit
- Ends Ends
-
- Figure 1
-
-
- -------------------------------------------------------------------